<?php
/**
 * Implenta las funciones necesarias para gestionar un usuario del sistema
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBClienteDAO extends DBMySQLDAO implements IDBCLienteDAO {

    private $cliente = null;

    public function  __construct() {
        $conexion = new conexion();
        try {
            $this->DBConn = $conexion->setConnect();
        } catch ( SQLException $Ex ) {
            throw new DBClienteDAOException("Se produjo un error al concetar con la base de datos", 1);
        }
    }
    

     /**
     *Devuelve un vector con toda la informacion del cliente que tenga el id
     * que entra por parametro
     *
     * @param <int> $id
     * @return <Array> $fila
     * @return <bool> false
     * @test
     *
     */
    public function select( $id ) {
        $id = addslashes( $id );

        $str = "SELECT *
                    FROM Cliente
                    WHERE CLT_ID = {$id}
                    AND CLT_STATUS = 1";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
                
            $cliente = new Cliente($fila['CLT_ID'], $fila['CLT_RAZON_SOCIAL'], $fila['CLT_NOMBRE'],
                    $fila['CLT_APELLIDO'], $fila['CLT_DIRECCION'], $fila['CLT_TELEFONO'], $fila['CLT_EMAIL'],
                    $fila['CLT_USR_ID']);

             return $cliente;
        } else {
            return false;
        }

    }

     /**
     *Insertar un cliente en la base de datos y lo asigna al id del usuario
     * que se pasa por parametro
     *
     * @param <ind> $USR_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function insert( Cliente $cliente ) {
        $idCliente = addslashes( $cliente->getId() );
        $id = addslashes( $cliente->getIdUsuario() );
        $razon_social = addslashes( $cliente->getRazonSocial() );
        $nombre = addslashes( $cliente->getNombre() );
        $apellido = addslashes( $cliente->getApellido() );
        $direccion = addslashes( $cliente->getDireccion() );
        $telefono = addslashes( $cliente->getTelefono() );
        $email = addslashes( $cliente->getEmail() );

        if ( $cliente->getId() != -1 ){
            $str = "INSERT INTO Cliente
                        VALUES (NULL,{$razon_social} ,'{$nombre}',
                        '{$apellido}','{$direccion}','{$telefono}',
                        '{$email}',1,{$id})";

            $this->DBConn->consulta( $str );
        } else {
            $str = "INSERT INTO Cliente
                        VALUES ({$idCliente},{$razon_social} ,'{$nombre}',
                        '{$apellido}','{$direccion}','{$telefono}',
                        '{$email}',1,{$id})";
            $this->DBConn->consulta( $str );
        }

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

     /**
     *Actualiza la informacion de un cliente
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function update( Cliente $cliente ){
        $idCliente = addslashes( $cliente->getId() );
        $razon_social = addslashes( $cliente->getRazonSocial() );
        $nombre = addslashes( $cliente->getNombre() );
        $apellido = addslashes( $cliente->getApellido() );
        $direccion = addslashes( $cliente->getDireccion() );
        $telefono = addslashes( $cliente->getTelefono() );
        $email = addslashes( $cliente->getEmail() );

        $str = "UPDATE Cliente SET
                    CLT_RAZON_SOCIAL= '{$razon_social}',
                    CLT_NOMBRE = '{$nombre}',
                    CLT_APELLIDO = '{$apellido}',
                    CLT_DIRECCION = '{$direccion}',
                    CLT_TELEFONO = '{$telefono}',
                    CLT_EMAIL = '{$email}'
                    WHERE CLT_ID = {$idCliente}";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

     /**
     *Elimina la informacion de un cliente
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function delete( $id ){
        $id = addslashes( $id );

        $str = "UPDATE Cliente
                    SET CLT_STATUS = 0
                    WHERE CLT_ID = {$id}";
        
        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

    /**
    * Devuelve una lista con todos los clientes
    *
    * @return <array> cliente
    * @return <bool> true
    * @return <bool> false
    * @test
    */
    public function listaCliente(){
        $str = "SELECT *
                    FROM cliente
                    WHERE CLT_STATUS = 1";

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1){

            while ( $fila = $this->DBConn->extraer_registro() ) {
                $cliente = new Cliente($fila['CLT_ID'], $fila['CLT_RAZON_SOCIAL'], $fila['CLT_NOMBRE'],
                    $fila['CLT_APELLIDO'], $fila['CLT_DIRECCION'], $fila['CLT_TELEFONO'], $fila['CLT_EMAIL'], $fila['CLT_USR_ID']);

                 $listaCliente[] = $cliente;
            }

            return $listaCliente;
        } else {
            return false;
        }
    }
}

?>
